perm filename DMON[SS,SYS] blob sn#305086 filedate 1977-09-21 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00006 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	TITLE DMON DISK STATISTICS MONITOR
C00003 00003	GO:	RESET
C00005 00004	SWR:	JRST 2,@[.+1]		LEAVE IOT USER MODE
C00012 00005	DPERCNT:IDIVI A,=100
C00015 00006	ADLKCNT:0
C00020 ENDMK
C⊗;
TITLE DMON DISK STATISTICS MONITOR

A←1
B←2
C←3
D←4
E←5
T←6
TT←7
Q←10
DDB←11
DAT←12
S←13
L←14

P←17

DDPMAX←←1000		;MAXIMUM SIZE OF DATA DISK PROGRAM
FLINE←←3		;FIRST TEXT LINE TO DISPLAY ON
FSLINE←←3*=12		;FIRST SCAN LINE

DEFINE CW (OP1,D1,OP2,D2,OP3,D3) <
	BYTE (8) D1,D2,D3 (3) OP1,OP2,OP3,4
>

FN←←1
CH←←2
COL←←3
HILINE←←4
LOLINE←←5

HS←←400000		;FOR REFERENCES TO SYSTEM CORE

DEFINE INFORM (A,B) <
PRINTS /A=B
/
>

DEFINE DDCLR (ADR,NWDS) <
ZZ←←0
REPEAT NWDS,<
	ADR+ZZ
ZZ←←ZZ+1
>
>

;LOW CORE POINTERS
CHKBEG←←223
SYSTOP←←265
GO:	RESET
	MOVE P,[-100,,PDL-1]
	SETZM FREEZE
	PUSHJ P,SYMLK		;LOOKUP SYSTEM SYMBOLS
	DPYSIZ 2*1000+2
	DPYPOS -600
	MOVEI A,CHKBEG
	PEEK A,
	MOVEI A,233000		;KLUDGE TO GET PATCH AREA
	MOVEM A,SLOPC
	LSH A,-9		;# LO PIECE PAGES
	MOVEI B,SYSTOP
	PEEK B,
	PEEK B,
	MOVEM B,FHIADR
	LSH B,-9+5		;STARTING HI PIECE PAGE # * 40
	ADDI B,10		;SET 2-PEICE FLAG
	HRL B,A
	GETHI B,
	JRST 4,.
	SETOM SWCNT
	MOVE A,[400017,,SWR]
	SKIPN DEBUG
	SPCWGO A,		;START UP SPACEWAR
	SKIPE DEBUG
	JRST SWR
MLOOP:	INCHRW A
	TRNN A,600
	JRST MLOOP
	LDB B,[POINT 7,A,35]
	CAIL B,"a"
	CAILE B,"z"
	CAIA
	SUBI B,40
	CAIN B,"E"
	PUSHJ P,EXT
	CAIN B,40
	SETCMM FREEZE
	JRST MLOOP

EXT:	SPCWAR 'SSW'		;KILL THE SPACEWAR MODULE
	PUSH P,DDCLRS+1
	SETZM DDCLRS+1
	DDUPG DDCLRS		;WAIT FOR SPACE WAR LEVEL TRANSFER TO FINISH
	POP P,DDCLRS+1
	DDUPG DDCLRS		;CLEAR THE SCREEN
	RESET			;RESET THE WORLD
	EXIT
SWR:	JRST 2,@[.+1]		;LEAVE IOT USER MODE
	SKIPE FREEZE
	JRST SWXIT
	SKIPE DEBUG
	JRST SWDEB
	AOSE SWCNT
	DISMIS
	MOVNI A,4
	MOVEM A,SWCNT
SWDEB:	MOVE P,[-100,,SPWPDL-1]
	PUSHJ P,SYMEXM		;EXAMINE SYSTEM SYMBOLS
	PUSHJ P,DDPSET
	PUSHJ P,MKDIS
	DDUPG DDHEAD
SWXIT:	SKIPN DEBUG
	DISMIS
	JRST SWR

MKDIS:	MOVE A,DLKCNT
	MOVE D,[440700,,DDLKCN]
	PUSHJ P,DDECOUT
	PUSHJ P,DCRLF
	POPJ P,

DTAB:	MOVEI B,40
	PUSHJ P,.+1
	PUSHJ P,.+1
	PUSHJ P,DCHR
DCHR:	IDPB B,D
	TLNE D,760000
	POPJ P,
	PUSH Q,DWORD
DINI:	SETZM DWORD
	AOS DWORD
	MOVE D,[POINT 7,DWORD]
	POPJ P,

DFIN:	MOVE A,DWORD
	ANDCMI A,1
	JUMPE A,CPOPJ
	PUSH Q,DWORD
	POPJ P,

DEXT:	HLRZ A,A
	SKIPA C,[POINT 6,A,17]
DNAM:	MOVE C,[POINT 6,A]
DNAM1:	ILDB B,C
	ADDI B,40
	PUSHJ P,DCHR
	TLNE C,770000
	JRST DNAM1
	MOVEI B,"."
	POPJ P,

DPPN:	MOVEI B,"["
	PUSHJ P,DCHR
	PUSH P,A
	PUSHJ P,DEXT
	MOVEI B,","
	PUSHJ P,DCHR
	POP P,A
	HRLZ A,A
	PUSHJ P,DEXT
	MOVEI B,"]"
	JRST DCHR

DEOL:	MOVEI B,15
	PUSHJ P,DCHR
	MOVEI B,12
	AOJA L,DCHR

DDEC:	PUSH P,OUTXCT
	MOVE B,[PUSHJ P,DCHR]
	MOVEM B,OUTXCT
	PUSHJ P,DECOUT
	POP P,OUTXCT
	POPJ P,

DOCT:	PUSH P,OUTXCT
	MOVE B,[PUSHJ P,DCHR]
	MOVEM B,OUTXCT
	PUSHJ P,OCTOUT
	POP P,OUTXCT
	POPJ P,

CLRRST:	SUBI L,=35		;- NUMBER OF LINES TO CLEAR
CLRRS1:	MOVEI B,40
	PUSHJ P,DCHR
	MOVEI B,15
	PUSHJ P,DCHR
	MOVEI B,12
	PUSHJ P,DCHR
	AOJL L,CLRRS1
	PUSHJ P,DFIN
	POPJ P,
DPERCNT:IDIVI A,=100
	PUSH P,B
	PUSHJ P,DDECOUT
	MOVEI A,"."
	IDPB A,D
	POP P,A
	MOVEI B,"0"
	CAIGE A,=10
	IDPB B,D
	JRST DDECOUT

SYMLK:	MOVE B,[RADIX50 0,DLKCNT]
	MOVEI C,0
	MOVEI D,B
	.SYML D,
	JRST 4,.		;LOST
	MOVEM D,ADLKCNT
CPOPJ:	POPJ P,

SYMEXM:	MOVE B,ADLKCNT		;GET ADDRESS OF SYSTEM SYMBOL
	MOVE B,HS(B)		;GET CONTENTS OF ADDRESS IN SYSTEM
	MOVEM B,DLKCNT
	POPJ P,

DDPSET:	MOVSI A,-NDDCLR
	MOVEI B,1
DDPSE1:	MOVEM B,@DDPCTB(A)
	AOBJN A,DDPSE1
	POPJ P,

DCRLF:	MOVEI A,[BYTE (7) 15,12]
DTYPE:	HRLI A,440700
DTYPE1:	ILDB B,A
	JUMPE B,CPOPJ
	IDPB B,D
	JRST DTYPE1

DDECOUT:PUSH P,OUTXCT
	MOVE B,[IDPB B,D]
	MOVEM B,OUTXCT
	PUSHJ P,DECOUT
	POP P,OUTXCT
	POPJ P,

DECOUT:	PUSH P,C
	MOVEI C,=10
	PUSHJ P,NUMOUT
	POP P,C
	POPJ P,

OCTOUT:	PUSH P,C
	MOVEI C,10
	PUSHJ P,NUMOUT
	POP P,C
	POPJ P,

NUMOUT:	IDIVI A,(C)
	JUMPE A,NUMOU1
	HRLM B,(P)
	PUSHJ P,NUMOUT
	HLRZ B,(P)
NUMOU1:	ADDI B,"0"
	XCT OUTXCT
	POPJ P,
ADLKCNT:0
DLKCNT:	0

PDL:	BLOCK 100
SPWPDL:	BLOCK 100
SWCNT:	0
DEBUG:	0
SLOPC:	0			;NUMBER OF WORDS IN GETHI LOW PIECE
FHIADR:	0			;FIRST SYSTEM ADDRESS IN GETHI HI PIECE
OUTXCT:	OUTCHR B
NAMPTR:	0
EXTPTR:	0
PPNPTR:	0
FREEZE:	0

DDHEAD:	600000,,DDPROG
	DPRGL
	0
	DDPRGL

DDPROG:	CW(FN,46,FN,46,FN,46)
DDPRGL:	CW(COL,2,HILINE,FSLINE⊗-4,LOLINE,FLINE&17)
	ASCID /          DSKMON  Disk statistics monitoring program

DLKCNT = /
DDLKCN:	BLOCK 3		;ROOM FOR 11 DIGITS, CR AND LF
	0
DPRGL←←.-DDPROG

DWORD:	0

DDPCTB:	DDCLR DDLKCN,3
NDDCLR←←.-DDPCTB

DDCLRS:	DDCLRP
	2
	0
	0

DDCLRP:	CW(FN,17,FN,17,CH,0)
	0

	END GO